export default {
  namespaced: true, // 开启命名空间

  state: {
    cartList: uni.getStorageSync('cartList') || [] // 购物车列表
  },
  getters: {
    // 获得所有的选中状态（全选按钮被修改）
    getAllSelectState(state) {
      return state.cartList.every(item => item.goods_state)
    },
    // 获得选中radio总数量
    getSelectTotal(state) {
      return state.cartList
        .filter(item => item.goods_state)
        .reduce((sum, item) => (sum += item.goods_number), 0)
    },
    // 获得选中radio总金额
    getSelectAmount(state) {
      return state.cartList
        .filter(item => item.goods_state)
        .reduce((sum, item) => sum + item.goods_number * item.goods_price, 0)
    },
    //总数量 写返回函数 //商品数量图标
    getTotal(state) {
      // 将仓库所有商品数量进行累加 reduce(累加器，值)
      return state.cartList.reduce((sum, item) =>
        sum + item.goods_number
        , 0)
    },
    getCarList(state) {
      // 购物车列表数据
      return state.cartList
    }
  },
  mutations: {
    // set 设置
    addToCart(state, goods) {
      // 判断原先仓库是否有重复商品，再进行增加或push
      const findGoods = state.cartList.find(item => {
        return item.goods_id === goods.goods_id  // 找到则是值(原先数组的值)，if判断为true
      })// 使用find可以找到对应的值，用findIndex()则麻烦很多
      if (findGoods) {
        // 找到了重复商品，对应数组对象数量增加
        // uni.setStorageSync('cartList', state.carInfo)
        findGoods.goods_number += goods.goods_number // findGoods是原先仓库数组的，goods为传过来的
      } else {
        // 没找到重复商品，进行数组添加
        state.cartList.push(goods)
      }
      // 保存到仓库
      uni.setStorageSync('cartList', state.cartList)
    },
    // 改变选中状态
    updateGoodsState(state, goods) {
      const findGoods = state.cartList.find(item =>
        item.goods_id === goods.goods_id
      )
      if (findGoods) {
        findGoods.goods_state = goods.goods_state // 赋值状态
        console.log('findGoods:', findGoods);
        // 保存到本地
        uni.setStorageSync("cartList", state.cartList)
      }
    },
    // 修改商品的数量 + -
    updateGoodsNumber(state, goods) {
      const findGoods = state.cartList.find(item =>
        item.goods_id === goods.goods_id
      )
      if (findGoods) {
        findGoods.goods_number = goods.goods_number // 赋值状态
        // 保存到本地 // 每次都有保存
        uni.setStorageSync("cartList", state.cartList)
      }
    },
    deleGoodsById(state, goods_id) {
      const findIndex = state.cartList.findIndex(item =>
        item.goods_id === goods_id
      )
      if (findIndex > -1) {
        // 大于-1即找到了
        state.cartList.splice(findIndex, 1)
        // 保存到本地 // 每次都有保存
        uni.setStorageSync("cartList", state.cartList)
      }
    },
    // 更新所有商品选中状态（全选修改）
    updateAllGoodsState(state, goods_state) {
      state.cartList.forEach(item => {
        item.goods_state = goods_state
      });
      // 保存到本地 // 每次都有保存
      uni.setStorageSync("cartList", state.cartList)
    },
  }
}
